/**
 * 
 * 根据分类字段进行数据过滤的基类方法，主从类型业务的从表业务可继承该类方法
 * @author : jackson wang
 * @Date   : 2015年10月3日 下午9:47:33
 * @version: 1.0
 * @param <T> 泛型需定义的业务类实体
 */
package org.brisling.base.service;

import java.util.ArrayList;
import java.util.List;

import org.brisling.base.domain.ListDomain;
import org.brisling.base.domain.inf.BaseDomainInf;
import org.brisling.base.repository.BaseUpLinkRepository;
import org.brisling.common.util.LongUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort;

public class BaseUplinkService<T extends BaseDomainInf> extends BaseService<T>{

	//定义起始页是否为1
	protected Boolean pageBasedOne=false;
	
	@Autowired
	protected BaseUpLinkRepository<T,Long> baseRepo;
	
	
	@Autowired
	protected void setService(BaseUpLinkRepository<T,Long> baseRepo){
		this.baseRepo = baseRepo;
		super.setService(baseRepo);
	}
		
	/**
	 * 
	 * @param uplinkid	分类字段值
	 * @param page		分页号
	 * @param pageSize	每页记录数量
	 * @param repo		仓库类
	 * @return	按照total 及  list封装的返回值（easyui列表页面要求）
	 */
	public ListDomain<T> getPagedListDomainByUplinkid(String uplinkid,String page,String pageSize
			){
		
		Integer _uplinkid = LongUtil.getIntValue(uplinkid, null);
		Integer _page = LongUtil.getIntValue(page, 0);
		Integer _pageSize = LongUtil.getIntValue(pageSize, 10);		
		return this.getPagedListDomainByUplinkid(_uplinkid, _page, _pageSize);		
	}
	
	/**
	 * 
	 * @param uplinkid	分类字段值
	 * @param page		分页号
	 * @param pageSize	每页记录数量
	 * @param repo		仓库类
	 * @return	按照total 及  list封装的返回值（easyui列表页面要求）
	 */
	public ListDomain<T> getPagedListDomainByUplinkid(Integer uplinkid,String page,String pageSize
			){		
		Integer _page = LongUtil.getIntValue(page, 0);
		Integer _pageSize = LongUtil.getIntValue(pageSize, 10);		
		return this.getPagedListDomainByUplinkid(uplinkid, _page, _pageSize);		
	}
	
	/**
	 * 
	 * @param uplinkid	分类字段值
	 * @param page		分页号
	 * @param pageSize	每页记录数量
	 * @param repo		仓库类
	 * @return	按照total 及  list封装的返回值（easyui列表页面要求）
	 */
	public ListDomain<T> getPagedListDomainByUplinkid(Integer uplinkid,Integer page,Integer pageSize){		
		ListDomain<T> listDomain = new ListDomain<T>();
		//dept为空，返回空值对象
		if(uplinkid==null){
			listDomain.setTotal(0l);
			listDomain.setRows(new ArrayList<T>());
			return listDomain;
		}
	
		if(!pageBasedOne)
			page -= 1;
		
		PageRequest _pageRequest = this.getPageRequest(page, pageSize, "sortedid");
				
		
		
		Page<T> _usrList = baseRepo.findByUplinkid(new Long(uplinkid), _pageRequest);		
		
		listDomain.setTotal(_usrList.getTotalElements());
		listDomain.setRows(_usrList.getContent());
		
		return listDomain;		
	}
	
	
	/**
	 * 
	 * @param uplinkid	分类字段值
	 * @param page		分页号
	 * @param pageSize	每页记录数量
	 * @param repo		仓库类
	 * @return	按照total 及  list封装的返回值（easyui列表页面要求）
	 */
	public List<T> getPagedListByUplinkid(Integer uplinkid,String page,String pageSize,Sort sort,
			BaseUpLinkRepository<T,Long> repo){
		
		Integer _page = LongUtil.getIntValue(page, null);
		Integer _pageSize = LongUtil.getIntValue(pageSize, null);
		return this.getPagedListByUplinkid(uplinkid, _page, _pageSize, sort);	
	}
	/**
	 * 
	 * @param uplinkid	分类字段值
	 * @param page		分页号
	 * @param pageSize	每页记录数量
	 * @param repo		仓库类
	 * @return	按照total 及  list封装的返回值（easyui列表页面要求）
	 */
	public List<T> getPagedListByUplinkid(Integer uplinkid,Integer page,Integer pageSize,Sort sort){		
		Page<T> _usrList =null;
		
		Sort _sort = sort == null?new Sort(new String[]{"sortedid"}):sort;
		
		
		
		PageRequest _pageRequest = this.getPageRequest(page, pageSize, _sort);	
		//dept为空，返回空值对象
		if(uplinkid==null){			
			_usrList = baseRepo.findAll(_pageRequest);
		}else{		
			_usrList = baseRepo.findByUplinkid(new Long(uplinkid), _pageRequest);				
		}
		return _usrList.getContent();		
	}
	
	
	
	
	
	
}
